/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cardapiodigital.model;


import br.com.cardapiodigital.data.CidadesData;
import br.com.cardapiodigital.data.EstabelecimentosData;
import br.com.cardapiodigital.data.EstadosData;
import br.com.cardapiodigital.entity.Cidades;
import br.com.cardapiodigital.entity.Estabelecimentos;
import br.com.cardapiodigital.entity.Estados;
import br.com.cardapiodigital.exception.CardapioDigitalException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;

/**
 *
 * @author egberto
 */
@ManagedBean
public class EstabelecimentosModel extends AbstractModel implements Serializable {
    
    //estabelecimentos
    private EstabelecimentosData estabData;
    private Estabelecimentos estab = null;
    private List<Estabelecimentos> todosEstab = null;   
    private int cidadeSelecionado;
    private String estadoSelecionado;
   
    
    //estados   
    private EstadosModel estadoModel = null;
    private EstadosData estadoData = null;
    private Estados estado = null;
    
    
    //cidades
    private CidadesModel cidadeModel = null;
    private CidadesData cidadeData = null;
    private Cidades cidade;
    
    
    public EstabelecimentosModel(){}
    
    public void salvar() {
        try {          
            
            setCidade(getCidadeData().obtem(getCidadeSelecionado()));
            getEstab().setCidadesId(getCidade());
            getEstabData().salvar(getEstab());            
            closeDialog();
            displayInfoMessageToUser("Created With Sucess");
            carregarTodosEstab();
            resetEstab();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }
    
    public void atualizar(){
        try {
           // setCidade(getCidadeData().obtem(getCidadeSelecionado());
            getEstab().setCidadesId(getCidade());
            getEstabData().atualizar(getEstab());
            closeDialog();
            displayInfoMessageToUser("Updated With Sucess");
            carregarTodosEstab();
            resetEstab();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }
    
    public void excluir(){
        try {
            getEstabData().excluir(getEstab().getId());
            closeDialog();
            displayInfoMessageToUser("Deleted With Sucess");
            carregarTodosEstab();
            resetEstab();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }

    public EstabelecimentosData getEstabData() {
        if(estabData == null){
            estabData = new EstabelecimentosData();
        }
        return estabData;
    }    

    public Estabelecimentos getEstab() {
        if(estab == null){
            estab = new Estabelecimentos();
        }
        return estab;
    }

    public void setEstab(Estabelecimentos estab) {
        this.estab = estab;
    }

    public List<Estabelecimentos> carregarTodosEstab() throws CardapioDigitalException {
        return todosEstab = getEstabData().buscarTodos();
    }

    public List<Cidades> carregarTodasCidadesPorEstado() throws CardapioDigitalException {      
        if(getEstadoSelecionado() == null){
            return getCidadeData().buscarPorEstado((getEstadoData().buscarTodos()).get(0).getUf());            
        }
        return getCidadeData().buscarPorEstado(getEstadoSelecionado());
    }
    
    
    
    public EstadosModel getEstadoModel() {
        if(estadoModel == null){
            estadoModel = new EstadosModel();
        }
        return estadoModel;
    }

    
    public EstadosData getEstadoData() {
        if(estadoData == null){
            estadoData = new EstadosData();
        }
        return estadoData;
    }    

    public Estados getEstado() {
        if(estado == null){
            estado = new Estados();
        }
        return estado;
    }

    public void setEstado(Estados estado) {
        this.estado = estado;
    }

    public CidadesModel getCidadeModel() {
        if(cidadeModel == null){
            cidadeModel = new CidadesModel();
        }
        return cidadeModel;
    }

    public CidadesData getCidadeData() {
        if(cidadeData == null){
            cidadeData = new CidadesData();
        }
        return cidadeData;
    }

    public void setCidadeData(CidadesData cidadeData) {
        this.cidadeData = cidadeData;
    }

    public Cidades getCidade() {
        return cidade;
    }

    public void setCidade(Cidades cidade) {
        this.cidade = cidade;
    }  

    public int getCidadeSelecionado() {
        return cidadeSelecionado;
    }

    public void setCidadeSelecionado(int cidadeSelecionado) {
        this.cidadeSelecionado = cidadeSelecionado;
    }

    public void setCidadeModel(CidadesModel cidadeModel) {
        this.cidadeModel = cidadeModel;
    }
    
        
    public void resetEstab() {
        estab = new Estabelecimentos();
    }

    public String getEstadoSelecionado() {
        return estadoSelecionado;
    }

    public void setEstadoSelecionado(String estadoSelecionado) {
        this.estadoSelecionado = estadoSelecionado;
    }

   
    
    
    
}
